// vue.config.js
// 需要暴露一个包含了自定义配置选项的对象
module.exports = {
  // 新增 configureWebpack 或 chainWebpack 节点，来自定义 webpack 的打包配置
  // configureWebpack 和 chainWebpack 的作用相同，唯一的区别为修改 webpack 配置的方式不同
  // configureWebpack 通过 操作对象 的形式，修改默认的 webpack 配置
  // chainWebpack 通过 链式编程 的形式， 修改默认的 webpack 配置
  // 
  // chainWebpack 配置方法
  chainWebpack: config => {
    // process.env.NODE_EVN 固定写法，拿到当前的开发模式
    // 发布模式
    config.when(process.env.NODE_ENV === 'production', config => {
      // config.entry('app') 获取默认的打包入口 main.js
      config.entry('app').clear().add('./src/main-prod.js')

      config.set('externals', {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        echarts: 'echarts',
        nprogress: 'NProgress',
        'element-plus': 'ElementPlus'
      })

      config.plugin('html').tap(args => {
        args[0].isProd = true
        return args
      })

    })

    // 发布模式
    config.when(process.env.NODE_ENV === 'development', config => {
      // config.entry('app') 获取默认的打包入口 main.js
      config.entry('app').clear().add('./src/main-dev.js')

      config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
      })
    })
  }
}